package com.fzkj.thread.demo4;

/**
 * 模拟卖票的过程
 */
public class SaleTicketThread implements Runnable {
    /**
     * 这里没有使用static的原因是在主方法中psvm，只new了一个SaleTicketThread对象，所以tickets和obj是被几个线程共享的
     */
    // 定义票数，供几个线程同时操作
    int tickets = 100;
    // 创建一个锁对象，这个对象是多个线程共享的对象
    Object obj = new Object();

    @Override
    public void run(){
        while(true){
            synchronized (obj) {
                if (tickets > 0) {
                    System.out.println(Thread.currentThread().getName() + "卖出了座位号：" + (tickets--) + "的票");
                } else {
                    break;
                }
            }
            try{
                Thread.sleep(100);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName()+"票卖完了。。。");
    }

}
